/**
 * @(#)RolCredencialK 05/04/2014
 *
 * Copyright (c) 2005-2015 PsiqueWare S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information PsiqueWare S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : AngelElectrico
 * <br/>Creaci&oacute;n:05/04/2014 - 05:54 PM PM
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li>05/04/2014 | <a href = "mailto:AngelElectrico@PsiqueWare.com">&Aacute;ngel El&eacute;ctrico</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */
package com.psiqueware.alheli.seguridad.modelo;

import com.psiqueware.alheli.basico.BaseObject;
import com.psiqueware.alheli.seguridad.Credencial;
import com.psiqueware.alheli.seguridad.Rol;
import com.psiqueware.alheli.seguridad.RolCredencial;

/**
 * {@link Rol} para una {@link Credencial}.
 * <br/>Paquete Original: com.psiqueware.alheli.seguridad.modelo
 * <br/>Nombre  Original: RolCredencialK
 * <br/>Oprima para ver : <a href="RolCredencialK.java.html"><i>C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">&Aacute;ngel El&eacute;ctrico</a>
 * @version Revision: 1.1 05/04/2014 05:54 PM
 */
public final class RolCredencialK extends BaseObject implements RolCredencial
{
    /**
     * &Iacaute;dentificador &uacute;nico del {@link Rol} al que se apunta.
     */
    private long m_idRol;

    /**
     * &Iacaute;dentificador &uacute;nico de la {@link Credencial} a la que se apunta.
     */
    private long m_idCredencial;

    /**
     * {@link Rol} de la relaci&oacute;n.
     */
    private Rol m_rol;

    /**
     * {@link Credencial} de la relaci&oacute;n.
     */
    private Credencial m_credencial;

    /**
     * Constructor de RolCredencialK.
     */
    public RolCredencialK()
    {
    }

    public RolCredencialK(final Rol rol, final Credencial credencial)
    {
        m_rol=rol;
        m_idRol=rol.getId();
        m_credencial=credencial;
        m_idCredencial=credencial.getId();
    }

    /**
     * Devuelve el &Iacaute;dentificador &uacute;nico del {@link Rol} al que se apunta.
     *
     * @return Valor de 'm_idRol'.
     */
    public long getIdRol()
    {
        return m_idRol;
    }

    /**
     * Establece el &Iacaute;dentificador &uacute;nico del {@link Rol} al que se apunta.
     *
     * @param idRol Valor para 'm_idRol'.
     */
    public void setIdRol(final long idRol)
    {
        m_idRol = idRol;
    }

    /**
     * Devuelve el &Iacaute;dentificador &uacute;nico de la {@link Credencial} a la que se apunta.
     *
     * @return Valor para 'm_idCredencial'.
     */
    public long getIdCredencial()
    {
        return m_idCredencial;
    }

    /**
     * Establece el &Iacaute;dentificador &uacute;nico de la {@link Credencial} a la que se apunta.
     *
     * @param idCredencial Nuevo valor para 'm_idCredencial'.
     */
    public void setIdCredencial(final long idCredencial)
    {
        m_idCredencial = idCredencial;
    }

    /**
     * Devuelve el {@link Rol} de la relaci&oacute;n.
     *
     * @return Valor de 'm_rol'.
     */
    public Rol getRol()
    {
        return m_rol;
    }

    /**
     * Establece el {@link Rol} de la relaci&oacute;n.
     *
     * @param rol Nuevo valor para 'm_rol'.
     */
    public void setRol(final Rol rol)
    {
        m_rol = rol;
    }

    /**
     * Devuelve la {@link Credencial} de la relaci&oacute;n.
     *
     * @return Valor de 'm_credencial'.
     */
    public Credencial getCredencial()
    {
        return m_credencial;
    }

    /**
     * Establece la {@link Credencial} de la relaci&oacute;n.
     *
     * @param credencial Nuevo valor para 'm_credencial'.
     */
    public void setCredencial(final Credencial credencial)
    {
        m_credencial = credencial;
    }

    @Override
    public boolean equals(final Object o)
    {
        if (this == o) return true;
        if (!(o instanceof RolCredencialK)) return false;
        if (!super.equals(o)) return false;

        final RolCredencialK that = (RolCredencialK) o;

        if (m_idCredencial != that.m_idCredencial) return false;
        if (m_idRol != that.m_idRol) return false;

        return true;
    }

    @Override
    public int hashCode()
    {
        int result = super.hashCode();
        result = 31 * result + (int) (m_idRol ^ (m_idRol >>> 32));
        result = 31 * result + (int) (m_idCredencial ^ (m_idCredencial >>> 32));
        return result;
    }
}

